package fachklassen.controls;

import java.util.HashMap;
import fachklassen.entities.Bestellung;

public class Bestellungsverwaltung {
	
	private HashMap<Integer,Bestellung> bestellungen;
	private Kundenverwaltung kv;
	private Produktverwaltung pv;
	
	public Bestellungsverwaltung(Kundenverwaltung kv, Produktverwaltung pv) {
		this.kv = kv;
		this.pv = pv;
		bestellungen = new HashMap<Integer,Bestellung>();
	}
	
	//======================== neuer Code =============================
	public int neueBestellungNeukunde(String name, String adresse) {
		int neueKnr;
		neueKnr = kv.neuerKunde(name, adresse);
		this.neueBestellungAltkunde(neueKnr);
		
		return neueKnr;
	}
	
	public void neueBestellungAltkunde(int knr) {
		Bestellung bestellung = new Bestellung(knr, kv);
		bestellungen.put(bestellung.getBstnr(), bestellung);
	}
	
	public void bestellungErgaenzen(int bstNr, int prodNr, int anzahl) {
		Bestellung bestellung = this.gibBestellung(bstNr);
		
		if (bestellung != null)
			bestellung.ergaenzen(prodNr, anzahl, pv);
	}
	
	public void bestellungAendern(int bstNr, int prodNr, int anzahl) {
		Bestellung bestellung = this.gibBestellung(bstNr);
		
		if (bestellung != null)
			bestellung.aendern(prodNr, anzahl);
	}
	
	public void bestellungPostenLoeschen(int bstNr, int prodNr) {
		Bestellung bestellung = this.gibBestellung(bstNr);
		
		if (bestellung != null)
			bestellung.loeschen(prodNr);
	}
	
	public int berechneGesamtpreis(int bstNr) {
		Bestellung bestellung = this.gibBestellung(bstNr);
		int preis = -1;
		
		if (bestellung != null) 
			preis = bestellung.preisBerechnen();
		
		return preis;
	}
	
	public String bestellungZeigen(int bstNr) {
		Bestellung bestellung = this.gibBestellung(bstNr);
		
		if (bestellung == null) 
			return "nicht gefunden!";
		
		return bestellung.toString();
	}
	
	public int gibAnzahlBestellungenFuerKunde(int knr) {
		int anzahl = 0;
		
		for (Bestellung bestellung:bestellungen.values()) {
			if (bestellung.gibKundennummer() == knr)
				anzahl++;
		}
		
		return anzahl;
	}
	
	public int gibAnzahlBestellteProdukte(int prodNr) {
		int anzahl = 0;
		
		for (Bestellung bestellung:bestellungen.values()) {
			anzahl += bestellung.gibAnzahlProdukt(prodNr);
		}
		
		return anzahl;
	}
	
	public Bestellung gibBestellung(int bstNr) {
		return bestellungen.get(bstNr);
	}
	//===============================================================
	
	@Override
	public String toString(){
		StringBuffer sb= new StringBuffer();
		for (Bestellung b:bestellungen.values()){
			sb.append(b.toString());
			sb.append("\n");
		}
		return sb.toString();
	}
}
